/*
 * stack.h
 *
 *  Created on: Apr 18, 2013
 *      Author: BAYRAMOV Matin
 */

#include <stdio.h>
#include <stdlib.h>

#include "macros.h"

#ifndef STACK_H_
#define STACK_H_

// Stack structure
typedef struct stack {
	size_t size;
	int * items;
} Stack;

// To initialize the stack
int initStack(Stack **);

// To insert values into stack
int pushStack(Stack *, int);

// To remove a value from the stack
int popStack(Stack *);

// Remove an specific item from stack
int popStackItem(Stack *, int);

// Clone stack
int cloneStack(Stack *, Stack**);

// Free stack memory
int freeStack(Stack **);

// Print the content of the stack
int printStack(Stack *);



#endif /* STACK_H_ */
